type token =
  | PLUS
  | TIMES
  | DIV
  | MINUS
  | CONS
  | EQQ
  | MINOR
  | MAJOR
  | MINOREQ
  | MAJOREQ
  | NEQ
  | MOD
  | HD
  | TL
  | UMINUS
  | AND
  | OR
  | NOT
  | SQUARE
  | CUBE
  | ABS
  | ISNULL
  | EOL
  | LQUADRA
  | RQUADRA
  | LPAREN
  | RPAREN
  | FUN
  | TO
  | VAR of (string)
  | SEMICOLON
  | EQ
  | LET
  | LETREC
  | IN
  | IF
  | THEN
  | ELSE
  | PRINT
  | INT of (int)
  | BOOL of (bool)

open Parsing;;
# 2 "parser.mly"
let y = Ast.Fun("f",Ast.App(Ast.Fun("x",Ast.App(Ast.Var "f",Ast.App(Ast.Var "x",Ast.Var "x"))),Ast.Fun("x",Ast.App(Ast.Var "f",Ast.App(Ast.Var "x",Ast.Var "x")))))
# 48 "parser.ml"
let yytransl_const = [|
  257 (* PLUS *);
  258 (* TIMES *);
  259 (* DIV *);
  260 (* MINUS *);
  261 (* CONS *);
  262 (* EQQ *);
  263 (* MINOR *);
  264 (* MAJOR *);
  265 (* MINOREQ *);
  266 (* MAJOREQ *);
  267 (* NEQ *);
  268 (* MOD *);
  269 (* HD *);
  270 (* TL *);
  271 (* UMINUS *);
  272 (* AND *);
  273 (* OR *);
  274 (* NOT *);
  275 (* SQUARE *);
  276 (* CUBE *);
  277 (* ABS *);
  278 (* ISNULL *);
  279 (* EOL *);
  280 (* LQUADRA *);
  281 (* RQUADRA *);
  282 (* LPAREN *);
  283 (* RPAREN *);
  284 (* FUN *);
  285 (* TO *);
  287 (* SEMICOLON *);
  288 (* EQ *);
  289 (* LET *);
  290 (* LETREC *);
  291 (* IN *);
  292 (* IF *);
  293 (* THEN *);
  294 (* ELSE *);
  295 (* PRINT *);
    0|]

let yytransl_block = [|
  286 (* VAR *);
  296 (* INT *);
  297 (* BOOL *);
    0|]

let yylhs = "\255\255\
\002\000\002\000\004\000\004\000\004\000\005\000\005\000\005\000\
\005\000\005\000\005\000\005\000\005\000\005\000\005\000\003\000\
\003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
\003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
\003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
\006\000\006\000\001\000\001\000\001\000\001\000\000\000"

let yylen = "\002\000\
\001\000\003\000\002\000\002\000\003\000\001\000\002\000\002\000\
\002\000\002\000\002\000\002\000\002\000\004\000\003\000\001\000\
\001\000\003\000\004\000\003\000\003\000\003\000\003\000\003\000\
\003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
\003\000\002\000\003\000\001\000\003\000\006\000\006\000\006\000\
\001\000\001\000\002\000\005\000\005\000\003\000\002\000"

let yydefred = "\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\000\
\000\000\016\000\017\000\047\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\036\000\000\000\000\000\011\000\
\012\000\013\000\000\000\034\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\043\000\
\000\000\000\000\000\000\035\000\000\000\000\000\018\000\000\000\
\015\000\000\000\000\000\000\000\000\000\046\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\024\000\000\000\000\000\037\000\000\000\000\000\002\000\
\019\000\014\000\000\000\000\000\000\000\000\000\000\000\044\000\
\000\000\045\000\000\000\000\000\038\000\039\000\040\000"

let yydgoto = "\002\000\
\020\000\037\000\021\000\022\000\029\000\024\000"

let yysindex = "\011\000\
\147\002\000\000\011\003\011\003\011\003\011\003\011\003\011\003\
\011\003\171\002\037\000\240\254\000\000\247\254\254\254\011\003\
\035\003\000\000\000\000\000\000\130\003\011\003\011\003\002\255\
\037\000\001\255\005\255\130\003\000\000\130\003\197\003\000\000\
\000\000\000\000\130\003\000\000\012\255\225\001\011\003\076\003\
\195\002\219\002\013\255\009\255\027\255\173\001\021\255\011\003\
\011\003\011\003\011\003\011\003\011\003\011\003\011\003\011\003\
\011\003\011\003\011\003\011\003\011\003\130\003\130\003\000\000\
\243\002\028\255\029\255\000\000\011\003\103\003\000\000\000\000\
\000\000\011\003\035\003\035\003\011\003\000\000\031\255\051\255\
\051\255\031\255\130\003\076\255\076\255\076\255\076\255\076\255\
\076\255\000\000\181\003\164\003\000\000\035\003\035\003\000\000\
\000\000\000\000\244\254\248\254\078\000\030\255\034\255\000\000\
\011\003\000\000\011\003\011\003\000\000\000\000\000\000"

let yyrindex = "\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\250\254\251\254\190\001\000\000\
\000\000\000\000\000\000\239\001\000\000\012\002\064\001\000\000\
\000\000\000\000\041\002\000\000\000\000\039\255\000\000\000\000\
\000\000\147\003\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\099\002\123\002\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\000\
\000\000\000\000\000\000\000\000\000\000\000\000\189\255\110\255\
\151\255\227\255\070\002\101\000\138\000\175\000\212\000\249\000\
\030\001\000\000\098\001\132\001\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000"

let yygindex = "\000\000\
\000\000\001\000\253\255\255\255\015\000\248\255"

let yytablesize = 1233
let yytable = "\028\000\
\030\000\031\000\032\000\033\000\034\000\035\000\038\000\040\000\
\047\000\041\000\104\000\001\000\046\000\043\000\106\000\023\000\
\042\000\041\000\062\000\063\000\044\000\040\000\105\000\065\000\
\064\000\042\000\107\000\045\000\042\000\041\000\066\000\023\000\
\049\000\050\000\067\000\070\000\068\000\062\000\063\000\042\000\
\075\000\074\000\059\000\078\000\079\000\080\000\081\000\082\000\
\083\000\084\000\085\000\086\000\087\000\088\000\089\000\090\000\
\091\000\092\000\076\000\094\000\095\000\062\000\059\000\001\000\
\105\000\038\000\099\000\100\000\107\000\096\000\098\000\000\000\
\000\000\101\000\000\000\000\000\048\000\049\000\050\000\051\000\
\000\000\000\000\000\000\000\000\000\000\102\000\103\000\059\000\
\000\000\023\000\023\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\109\000\000\000\110\000\
\111\000\000\000\000\000\000\000\023\000\023\000\022\000\022\000\
\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
\022\000\000\000\022\000\022\000\000\000\022\000\022\000\022\000\
\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
\022\000\022\000\000\000\022\000\022\000\000\000\022\000\022\000\
\022\000\022\000\022\000\022\000\000\000\022\000\022\000\023\000\
\023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\
\023\000\023\000\000\000\023\000\023\000\000\000\023\000\023\000\
\023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\
\023\000\023\000\023\000\000\000\023\000\023\000\000\000\023\000\
\023\000\023\000\023\000\023\000\023\000\020\000\023\000\023\000\
\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
\000\000\020\000\020\000\000\000\020\000\020\000\020\000\020\000\
\020\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\
\020\000\000\000\020\000\020\000\000\000\020\000\020\000\020\000\
\020\000\020\000\020\000\021\000\020\000\020\000\021\000\021\000\
\021\000\021\000\021\000\021\000\021\000\021\000\000\000\021\000\
\021\000\000\000\021\000\021\000\021\000\021\000\021\000\021\000\
\021\000\021\000\021\000\021\000\021\000\021\000\021\000\000\000\
\021\000\021\000\000\000\021\000\021\000\021\000\021\000\021\000\
\021\000\000\000\021\000\021\000\037\000\037\000\037\000\037\000\
\037\000\037\000\037\000\037\000\037\000\037\000\037\000\037\000\
\005\000\005\000\000\000\037\000\037\000\005\000\005\000\005\000\
\005\000\005\000\005\000\005\000\000\000\005\000\005\000\005\000\
\039\000\005\000\000\000\000\000\005\000\005\000\005\000\005\000\
\000\000\003\000\004\000\005\000\005\000\000\000\005\000\006\000\
\007\000\008\000\009\000\000\000\010\000\000\000\011\000\000\000\
\012\000\000\000\013\000\000\000\000\000\026\000\027\000\000\000\
\016\000\000\000\000\000\000\000\018\000\019\000\048\000\049\000\
\050\000\051\000\052\000\053\000\054\000\055\000\056\000\057\000\
\058\000\059\000\000\000\000\000\000\000\060\000\061\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
\000\000\025\000\025\000\108\000\025\000\025\000\025\000\025\000\
\025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
\025\000\000\000\025\000\025\000\000\000\025\000\025\000\025\000\
\025\000\025\000\025\000\000\000\025\000\025\000\027\000\027\000\
\027\000\027\000\027\000\027\000\027\000\000\000\027\000\027\000\
\000\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\
\027\000\027\000\027\000\027\000\027\000\027\000\000\000\027\000\
\027\000\000\000\027\000\027\000\027\000\027\000\027\000\027\000\
\000\000\027\000\027\000\028\000\028\000\028\000\028\000\028\000\
\028\000\028\000\000\000\028\000\028\000\000\000\028\000\028\000\
\028\000\028\000\028\000\028\000\028\000\028\000\028\000\028\000\
\028\000\028\000\028\000\000\000\028\000\028\000\000\000\028\000\
\028\000\028\000\028\000\028\000\028\000\000\000\028\000\028\000\
\029\000\029\000\029\000\029\000\029\000\029\000\029\000\000\000\
\029\000\029\000\000\000\029\000\029\000\029\000\029\000\029\000\
\029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\
\000\000\029\000\029\000\000\000\029\000\029\000\029\000\029\000\
\029\000\029\000\000\000\029\000\029\000\030\000\030\000\030\000\
\030\000\030\000\030\000\030\000\000\000\030\000\030\000\000\000\
\030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\
\030\000\030\000\030\000\030\000\030\000\000\000\030\000\030\000\
\000\000\030\000\030\000\030\000\030\000\030\000\030\000\000\000\
\030\000\030\000\026\000\026\000\026\000\026\000\026\000\026\000\
\026\000\000\000\026\000\026\000\000\000\026\000\026\000\026\000\
\026\000\026\000\026\000\026\000\026\000\026\000\026\000\026\000\
\026\000\026\000\000\000\026\000\026\000\000\000\026\000\026\000\
\026\000\026\000\026\000\026\000\007\000\026\000\026\000\000\000\
\000\000\000\000\000\000\000\000\007\000\007\000\000\000\007\000\
\007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
\007\000\007\000\007\000\007\000\000\000\007\000\007\000\000\000\
\007\000\007\000\007\000\007\000\007\000\007\000\031\000\007\000\
\007\000\000\000\000\000\000\000\000\000\000\000\031\000\031\000\
\000\000\000\000\031\000\031\000\031\000\031\000\031\000\031\000\
\031\000\031\000\031\000\031\000\031\000\031\000\000\000\031\000\
\031\000\000\000\031\000\031\000\031\000\031\000\031\000\031\000\
\032\000\031\000\031\000\000\000\000\000\000\000\000\000\000\000\
\032\000\032\000\000\000\000\000\000\000\032\000\032\000\032\000\
\032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\
\000\000\032\000\032\000\000\000\032\000\032\000\032\000\032\000\
\032\000\032\000\000\000\032\000\032\000\048\000\049\000\050\000\
\051\000\052\000\053\000\054\000\055\000\056\000\057\000\058\000\
\059\000\000\000\000\000\000\000\060\000\061\000\036\000\036\000\
\036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\
\036\000\036\000\000\000\000\000\000\000\036\000\036\000\000\000\
\000\000\077\000\000\000\000\000\036\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\036\000\048\000\049\000\050\000\051\000\052\000\053\000\054\000\
\055\000\056\000\057\000\058\000\059\000\000\000\000\000\000\000\
\060\000\061\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\000\000\000\000\008\000\008\000\000\000\000\000\069\000\
\008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\
\008\000\008\000\008\000\000\000\008\000\008\000\000\000\008\000\
\008\000\008\000\008\000\008\000\008\000\000\000\008\000\008\000\
\009\000\009\000\000\000\000\000\000\000\009\000\009\000\009\000\
\009\000\009\000\009\000\009\000\009\000\009\000\009\000\009\000\
\000\000\009\000\009\000\000\000\009\000\009\000\009\000\009\000\
\009\000\009\000\000\000\009\000\009\000\010\000\010\000\000\000\
\000\000\000\000\010\000\010\000\010\000\010\000\010\000\010\000\
\010\000\010\000\010\000\010\000\010\000\000\000\010\000\010\000\
\000\000\010\000\010\000\010\000\010\000\010\000\010\000\000\000\
\010\000\010\000\033\000\033\000\000\000\000\000\000\000\033\000\
\033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\
\033\000\033\000\000\000\033\000\033\000\000\000\033\000\033\000\
\033\000\033\000\033\000\033\000\000\000\033\000\033\000\004\000\
\004\000\000\000\000\000\000\000\004\000\004\000\004\000\004\000\
\004\000\004\000\004\000\000\000\004\000\004\000\004\000\000\000\
\004\000\000\000\000\000\004\000\004\000\004\000\004\000\003\000\
\003\000\000\000\004\000\004\000\003\000\003\000\003\000\003\000\
\003\000\003\000\003\000\000\000\003\000\003\000\003\000\000\000\
\003\000\000\000\000\000\003\000\003\000\003\000\003\000\003\000\
\004\000\000\000\003\000\003\000\005\000\006\000\007\000\008\000\
\009\000\000\000\010\000\000\000\011\000\000\000\012\000\000\000\
\013\000\000\000\000\000\014\000\015\000\000\000\016\000\003\000\
\004\000\017\000\018\000\019\000\005\000\006\000\007\000\008\000\
\009\000\000\000\010\000\036\000\025\000\000\000\012\000\000\000\
\013\000\000\000\000\000\026\000\027\000\000\000\016\000\003\000\
\004\000\000\000\018\000\019\000\005\000\006\000\007\000\008\000\
\009\000\000\000\010\000\000\000\025\000\072\000\012\000\000\000\
\013\000\000\000\000\000\026\000\027\000\000\000\016\000\003\000\
\004\000\000\000\018\000\019\000\005\000\006\000\007\000\008\000\
\009\000\000\000\010\000\000\000\025\000\073\000\012\000\000\000\
\013\000\000\000\000\000\026\000\027\000\000\000\016\000\003\000\
\004\000\000\000\018\000\019\000\005\000\006\000\007\000\008\000\
\009\000\000\000\010\000\000\000\025\000\093\000\012\000\000\000\
\013\000\000\000\000\000\026\000\027\000\000\000\016\000\003\000\
\004\000\000\000\018\000\019\000\005\000\006\000\007\000\008\000\
\009\000\000\000\010\000\000\000\025\000\000\000\012\000\000\000\
\013\000\000\000\000\000\026\000\027\000\000\000\016\000\003\000\
\004\000\000\000\018\000\019\000\005\000\006\000\007\000\008\000\
\009\000\000\000\010\000\000\000\011\000\000\000\012\000\000\000\
\013\000\000\000\000\000\026\000\027\000\000\000\016\000\000\000\
\000\000\000\000\018\000\019\000\048\000\049\000\050\000\051\000\
\052\000\053\000\054\000\055\000\056\000\057\000\058\000\059\000\
\000\000\000\000\000\000\060\000\061\000\000\000\000\000\000\000\
\000\000\000\000\000\000\000\000\000\000\000\000\071\000\048\000\
\049\000\050\000\051\000\052\000\053\000\054\000\055\000\056\000\
\057\000\058\000\059\000\000\000\000\000\000\000\060\000\061\000\
\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
\000\000\097\000\048\000\049\000\050\000\051\000\052\000\053\000\
\054\000\055\000\056\000\057\000\058\000\059\000\000\000\000\000\
\000\000\060\000\061\000\036\000\036\000\036\000\036\000\036\000\
\036\000\036\000\036\000\036\000\036\000\036\000\036\000\000\000\
\000\000\000\000\036\000\036\000\048\000\049\000\050\000\051\000\
\000\000\053\000\054\000\055\000\056\000\057\000\058\000\059\000\
\000\000\000\000\000\000\060\000\061\000\048\000\049\000\050\000\
\051\000\000\000\053\000\054\000\055\000\056\000\057\000\058\000\
\059\000\000\000\000\000\000\000\060\000\048\000\049\000\050\000\
\051\000\000\000\053\000\054\000\055\000\056\000\057\000\058\000\
\059\000"

let yycheck = "\003\000\
\004\000\005\000\006\000\007\000\008\000\009\000\010\000\011\000\
\017\000\011\000\023\001\001\000\016\000\030\001\023\001\001\000\
\023\001\023\001\022\000\023\000\030\001\025\000\035\001\025\000\
\023\001\011\000\035\001\030\001\035\001\035\001\030\001\017\000\
\002\001\003\001\030\001\039\000\025\001\041\000\042\000\025\000\
\032\001\029\001\012\001\023\001\048\000\049\000\050\000\051\000\
\052\000\053\000\054\000\055\000\056\000\057\000\058\000\059\000\
\060\000\061\000\032\001\032\001\032\001\065\000\012\001\025\001\
\035\001\069\000\075\000\076\000\035\001\069\000\074\000\255\255\
\255\255\077\000\255\255\255\255\001\001\002\001\003\001\004\001\
\255\255\255\255\255\255\255\255\255\255\094\000\095\000\012\001\
\255\255\075\000\076\000\255\255\255\255\255\255\255\255\255\255\
\255\255\255\255\255\255\255\255\255\255\105\000\255\255\107\000\
\108\000\255\255\255\255\255\255\094\000\095\000\001\001\002\001\
\003\001\004\001\005\001\006\001\007\001\008\001\009\001\010\001\
\011\001\255\255\013\001\014\001\255\255\016\001\017\001\018\001\
\019\001\020\001\021\001\022\001\023\001\024\001\025\001\026\001\
\027\001\028\001\255\255\030\001\031\001\255\255\033\001\034\001\
\035\001\036\001\037\001\038\001\255\255\040\001\041\001\001\001\
\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\
\010\001\011\001\255\255\013\001\014\001\255\255\016\001\017\001\
\018\001\019\001\020\001\021\001\022\001\023\001\024\001\025\001\
\026\001\027\001\028\001\255\255\030\001\031\001\255\255\033\001\
\034\001\035\001\036\001\037\001\038\001\001\001\040\001\041\001\
\004\001\005\001\006\001\007\001\008\001\009\001\010\001\011\001\
\255\255\013\001\014\001\255\255\016\001\017\001\018\001\019\001\
\020\001\021\001\022\001\023\001\024\001\025\001\026\001\027\001\
\028\001\255\255\030\001\031\001\255\255\033\001\034\001\035\001\
\036\001\037\001\038\001\001\001\040\001\041\001\004\001\005\001\
\006\001\007\001\008\001\009\001\010\001\011\001\255\255\013\001\
\014\001\255\255\016\001\017\001\018\001\019\001\020\001\021\001\
\022\001\023\001\024\001\025\001\026\001\027\001\028\001\255\255\
\030\001\031\001\255\255\033\001\034\001\035\001\036\001\037\001\
\038\001\255\255\040\001\041\001\001\001\002\001\003\001\004\001\
\005\001\006\001\007\001\008\001\009\001\010\001\011\001\012\001\
\013\001\014\001\255\255\016\001\017\001\018\001\019\001\020\001\
\021\001\022\001\023\001\024\001\255\255\026\001\027\001\028\001\
\004\001\030\001\255\255\255\255\033\001\034\001\035\001\036\001\
\255\255\013\001\014\001\040\001\041\001\255\255\018\001\019\001\
\020\001\021\001\022\001\255\255\024\001\255\255\026\001\255\255\
\028\001\255\255\030\001\255\255\255\255\033\001\034\001\255\255\
\036\001\255\255\255\255\255\255\040\001\041\001\001\001\002\001\
\003\001\004\001\005\001\006\001\007\001\008\001\009\001\010\001\
\011\001\012\001\255\255\255\255\255\255\016\001\017\001\255\255\
\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
\255\255\005\001\006\001\007\001\008\001\009\001\010\001\011\001\
\255\255\013\001\014\001\038\001\016\001\017\001\018\001\019\001\
\020\001\021\001\022\001\023\001\024\001\025\001\026\001\027\001\
\028\001\255\255\030\001\031\001\255\255\033\001\034\001\035\001\
\036\001\037\001\038\001\255\255\040\001\041\001\005\001\006\001\
\007\001\008\001\009\001\010\001\011\001\255\255\013\001\014\001\
\255\255\016\001\017\001\018\001\019\001\020\001\021\001\022\001\
\023\001\024\001\025\001\026\001\027\001\028\001\255\255\030\001\
\031\001\255\255\033\001\034\001\035\001\036\001\037\001\038\001\
\255\255\040\001\041\001\005\001\006\001\007\001\008\001\009\001\
\010\001\011\001\255\255\013\001\014\001\255\255\016\001\017\001\
\018\001\019\001\020\001\021\001\022\001\023\001\024\001\025\001\
\026\001\027\001\028\001\255\255\030\001\031\001\255\255\033\001\
\034\001\035\001\036\001\037\001\038\001\255\255\040\001\041\001\
\005\001\006\001\007\001\008\001\009\001\010\001\011\001\255\255\
\013\001\014\001\255\255\016\001\017\001\018\001\019\001\020\001\
\021\001\022\001\023\001\024\001\025\001\026\001\027\001\028\001\
\255\255\030\001\031\001\255\255\033\001\034\001\035\001\036\001\
\037\001\038\001\255\255\040\001\041\001\005\001\006\001\007\001\
\008\001\009\001\010\001\011\001\255\255\013\001\014\001\255\255\
\016\001\017\001\018\001\019\001\020\001\021\001\022\001\023\001\
\024\001\025\001\026\001\027\001\028\001\255\255\030\001\031\001\
\255\255\033\001\034\001\035\001\036\001\037\001\038\001\255\255\
\040\001\041\001\005\001\006\001\007\001\008\001\009\001\010\001\
\011\001\255\255\013\001\014\001\255\255\016\001\017\001\018\001\
\019\001\020\001\021\001\022\001\023\001\024\001\025\001\026\001\
\027\001\028\001\255\255\030\001\031\001\255\255\033\001\034\001\
\035\001\036\001\037\001\038\001\005\001\040\001\041\001\255\255\
\255\255\255\255\255\255\255\255\013\001\014\001\255\255\016\001\
\017\001\018\001\019\001\020\001\021\001\022\001\023\001\024\001\
\025\001\026\001\027\001\028\001\255\255\030\001\031\001\255\255\
\033\001\034\001\035\001\036\001\037\001\038\001\005\001\040\001\
\041\001\255\255\255\255\255\255\255\255\255\255\013\001\014\001\
\255\255\255\255\017\001\018\001\019\001\020\001\021\001\022\001\
\023\001\024\001\025\001\026\001\027\001\028\001\255\255\030\001\
\031\001\255\255\033\001\034\001\035\001\036\001\037\001\038\001\
\005\001\040\001\041\001\255\255\255\255\255\255\255\255\255\255\
\013\001\014\001\255\255\255\255\255\255\018\001\019\001\020\001\
\021\001\022\001\023\001\024\001\025\001\026\001\027\001\028\001\
\255\255\030\001\031\001\255\255\033\001\034\001\035\001\036\001\
\037\001\038\001\255\255\040\001\041\001\001\001\002\001\003\001\
\004\001\005\001\006\001\007\001\008\001\009\001\010\001\011\001\
\012\001\255\255\255\255\255\255\016\001\017\001\001\001\002\001\
\003\001\004\001\005\001\006\001\007\001\008\001\009\001\010\001\
\011\001\012\001\255\255\255\255\255\255\016\001\017\001\255\255\
\255\255\037\001\255\255\255\255\023\001\255\255\255\255\255\255\
\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
\035\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\
\008\001\009\001\010\001\011\001\012\001\255\255\255\255\255\255\
\016\001\017\001\255\255\255\255\255\255\255\255\255\255\255\255\
\255\255\255\255\255\255\013\001\014\001\255\255\255\255\031\001\
\018\001\019\001\020\001\021\001\022\001\023\001\024\001\025\001\
\026\001\027\001\028\001\255\255\030\001\031\001\255\255\033\001\
\034\001\035\001\036\001\037\001\038\001\255\255\040\001\041\001\
\013\001\014\001\255\255\255\255\255\255\018\001\019\001\020\001\
\021\001\022\001\023\001\024\001\025\001\026\001\027\001\028\001\
\255\255\030\001\031\001\255\255\033\001\034\001\035\001\036\001\
\037\001\038\001\255\255\040\001\041\001\013\001\014\001\255\255\
\255\255\255\255\018\001\019\001\020\001\021\001\022\001\023\001\
\024\001\025\001\026\001\027\001\028\001\255\255\030\001\031\001\
\255\255\033\001\034\001\035\001\036\001\037\001\038\001\255\255\
\040\001\041\001\013\001\014\001\255\255\255\255\255\255\018\001\
\019\001\020\001\021\001\022\001\023\001\024\001\025\001\026\001\
\027\001\028\001\255\255\030\001\031\001\255\255\033\001\034\001\
\035\001\036\001\037\001\038\001\255\255\040\001\041\001\013\001\
\014\001\255\255\255\255\255\255\018\001\019\001\020\001\021\001\
\022\001\023\001\024\001\255\255\026\001\027\001\028\001\255\255\
\030\001\255\255\255\255\033\001\034\001\035\001\036\001\013\001\
\014\001\255\255\040\001\041\001\018\001\019\001\020\001\021\001\
\022\001\023\001\024\001\255\255\026\001\027\001\028\001\255\255\
\030\001\255\255\255\255\033\001\034\001\035\001\036\001\013\001\
\014\001\255\255\040\001\041\001\018\001\019\001\020\001\021\001\
\022\001\255\255\024\001\255\255\026\001\255\255\028\001\255\255\
\030\001\255\255\255\255\033\001\034\001\255\255\036\001\013\001\
\014\001\039\001\040\001\041\001\018\001\019\001\020\001\021\001\
\022\001\255\255\024\001\025\001\026\001\255\255\028\001\255\255\
\030\001\255\255\255\255\033\001\034\001\255\255\036\001\013\001\
\014\001\255\255\040\001\041\001\018\001\019\001\020\001\021\001\
\022\001\255\255\024\001\255\255\026\001\027\001\028\001\255\255\
\030\001\255\255\255\255\033\001\034\001\255\255\036\001\013\001\
\014\001\255\255\040\001\041\001\018\001\019\001\020\001\021\001\
\022\001\255\255\024\001\255\255\026\001\027\001\028\001\255\255\
\030\001\255\255\255\255\033\001\034\001\255\255\036\001\013\001\
\014\001\255\255\040\001\041\001\018\001\019\001\020\001\021\001\
\022\001\255\255\024\001\255\255\026\001\027\001\028\001\255\255\
\030\001\255\255\255\255\033\001\034\001\255\255\036\001\013\001\
\014\001\255\255\040\001\041\001\018\001\019\001\020\001\021\001\
\022\001\255\255\024\001\255\255\026\001\255\255\028\001\255\255\
\030\001\255\255\255\255\033\001\034\001\255\255\036\001\013\001\
\014\001\255\255\040\001\041\001\018\001\019\001\020\001\021\001\
\022\001\255\255\024\001\255\255\026\001\255\255\028\001\255\255\
\030\001\255\255\255\255\033\001\034\001\255\255\036\001\255\255\
\255\255\255\255\040\001\041\001\001\001\002\001\003\001\004\001\
\005\001\006\001\007\001\008\001\009\001\010\001\011\001\012\001\
\255\255\255\255\255\255\016\001\017\001\255\255\255\255\255\255\
\255\255\255\255\255\255\255\255\255\255\255\255\027\001\001\001\
\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\
\010\001\011\001\012\001\255\255\255\255\255\255\016\001\017\001\
\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
\255\255\027\001\001\001\002\001\003\001\004\001\005\001\006\001\
\007\001\008\001\009\001\010\001\011\001\012\001\255\255\255\255\
\255\255\016\001\017\001\001\001\002\001\003\001\004\001\005\001\
\006\001\007\001\008\001\009\001\010\001\011\001\012\001\255\255\
\255\255\255\255\016\001\017\001\001\001\002\001\003\001\004\001\
\255\255\006\001\007\001\008\001\009\001\010\001\011\001\012\001\
\255\255\255\255\255\255\016\001\017\001\001\001\002\001\003\001\
\004\001\255\255\006\001\007\001\008\001\009\001\010\001\011\001\
\012\001\255\255\255\255\255\255\016\001\001\001\002\001\003\001\
\004\001\255\255\006\001\007\001\008\001\009\001\010\001\011\001\
\012\001"

let yynames_const = "\
  PLUS\000\
  TIMES\000\
  DIV\000\
  MINUS\000\
  CONS\000\
  EQQ\000\
  MINOR\000\
  MAJOR\000\
  MINOREQ\000\
  MAJOREQ\000\
  NEQ\000\
  MOD\000\
  HD\000\
  TL\000\
  UMINUS\000\
  AND\000\
  OR\000\
  NOT\000\
  SQUARE\000\
  CUBE\000\
  ABS\000\
  ISNULL\000\
  EOL\000\
  LQUADRA\000\
  RQUADRA\000\
  LPAREN\000\
  RPAREN\000\
  FUN\000\
  TO\000\
  SEMICOLON\000\
  EQ\000\
  LET\000\
  LETREC\000\
  IN\000\
  IF\000\
  THEN\000\
  ELSE\000\
  PRINT\000\
  "

let yynames_block = "\
  VAR\000\
  INT\000\
  BOOL\000\
  "

let yyact = [|
  (fun _ -> failwith "parser")
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 30 "parser.mly"
        ( Ast.Cons(_1, Ast.Nil) )
# 535 "parser.ml"
               : 'listexpr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'listexpr) in
    Obj.repr(
# 31 "parser.mly"
                          ( Ast.Cons (_1,_3) )
# 543 "parser.ml"
               : 'listexpr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'bfun) in
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 35 "parser.mly"
              ( Ast.App (_1,_2) )
# 551 "parser.ml"
               : 'app))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'app) in
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 36 "parser.mly"
             ( Ast.App (_1,_2) )
# 559 "parser.ml"
               : 'app))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'app) in
    Obj.repr(
# 37 "parser.mly"
                    ( _2 )
# 566 "parser.ml"
               : 'app))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : string) in
    Obj.repr(
# 41 "parser.mly"
         ( Ast.Var _1 )
# 573 "parser.ml"
               : 'bfun))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 42 "parser.mly"
             ( Ast.App(Ast.Bfun("not"),_2) )
# 580 "parser.ml"
               : 'bfun))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 43 "parser.mly"
            ( Ast.App(Ast.Bfun("hd"),_2) )
# 587 "parser.ml"
               : 'bfun))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 44 "parser.mly"
            ( Ast.App(Ast.Bfun("tl"),_2) )
# 594 "parser.ml"
               : 'bfun))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 45 "parser.mly"
                ( Ast.App(Ast.Bfun("isnull"),_2) )
# 601 "parser.ml"
               : 'bfun))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 46 "parser.mly"
               ( Ast.App(Ast.Bfun("square"),_2) )
# 608 "parser.ml"
               : 'bfun))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 47 "parser.mly"
              ( Ast.App(Ast.Bfun("cube"),_2) )
# 615 "parser.ml"
               : 'bfun))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 48 "parser.mly"
             ( Ast.App(Ast.Bfun("abs"),_2) )
# 622 "parser.ml"
               : 'bfun))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 2 : string) in
    let _4 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 49 "parser.mly"
                   ( Ast.Fun (_2,_4) )
# 630 "parser.ml"
               : 'bfun))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'bfun) in
    Obj.repr(
# 50 "parser.mly"
                     ( _2 )
# 637 "parser.ml"
               : 'bfun))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : int) in
    Obj.repr(
# 54 "parser.mly"
          ( Ast.Int _1 )
# 644 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : bool) in
    Obj.repr(
# 55 "parser.mly"
           ( Ast.Bool _1 )
# 651 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'expr) in
    Obj.repr(
# 56 "parser.mly"
                     ( _2 )
# 658 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _3 = (Parsing.peek_val __caml_parser_env 1 : 'expr) in
    Obj.repr(
# 57 "parser.mly"
                                        ( Ast.App(Ast.App(Ast.Bfun2("*"),Ast.Int (-1)),_3) )
# 665 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 58 "parser.mly"
                 ( Ast.App(Ast.App(Ast.Bfun2("+"),_1),_3) )
# 673 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 59 "parser.mly"
                  ( Ast.App(Ast.App(Ast.Bfun2("-"),_1),_3) )
# 681 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 60 "parser.mly"
                  ( Ast.App(Ast.App(Ast.Bfun2("*"),_1),_3) )
# 689 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 61 "parser.mly"
                 ( Ast.App(Ast.App(Ast.Bfun2("/"),_1),_3) )
# 697 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 62 "parser.mly"
                 ( Ast.App(Ast.App(Ast.Bfun2("%"),_1),_3) )
# 705 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 63 "parser.mly"
                 ( Ast.App(Ast.App(Ast.Bfun2("=="),_1),_3) )
# 713 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 64 "parser.mly"
                 ( Ast.App(Ast.App(Ast.Bfun2("!="),_1),_3) )
# 721 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 65 "parser.mly"
                  ( Ast.App(Ast.App(Ast.Bfun2("<"),_1),_3) )
# 729 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 66 "parser.mly"
                  ( Ast.App(Ast.App(Ast.Bfun2(">"),_1),_3) )
# 737 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 67 "parser.mly"
                    ( Ast.App(Ast.App(Ast.Bfun2("<="),_1),_3) )
# 745 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 68 "parser.mly"
                    ( Ast.App(Ast.App(Ast.Bfun2(">="),_1),_3) )
# 753 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 69 "parser.mly"
                 ( Ast.App(Ast.App(Ast.Bfun2("&&"),_1),_3) )
# 761 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 70 "parser.mly"
                ( Ast.App(Ast.App(Ast.Bfun2("||"),_1),_3) )
# 769 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 71 "parser.mly"
                 ( Ast.Cons (_1,_3) )
# 777 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    Obj.repr(
# 72 "parser.mly"
                  ( Ast.Nil )
# 783 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'listexpr) in
    Obj.repr(
# 73 "parser.mly"
                            ( _2 )
# 790 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'bfun) in
    Obj.repr(
# 74 "parser.mly"
            ( _1 )
# 797 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'app) in
    Obj.repr(
# 75 "parser.mly"
                      ( _2 )
# 804 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 4 : string) in
    let _4 = (Parsing.peek_val __caml_parser_env 2 : 'topexpr) in
    let _6 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 76 "parser.mly"
                             ( Ast.App(Ast.Fun(_2, _6),_4) )
# 813 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 4 : string) in
    let _4 = (Parsing.peek_val __caml_parser_env 2 : 'topexpr) in
    let _6 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 77 "parser.mly"
                                ( Ast.App(Ast.Fun(_2, _6), Ast.App(y,Ast.Fun(_2,_4))) )
# 822 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 4 : 'expr) in
    let _4 = (Parsing.peek_val __caml_parser_env 2 : 'expr) in
    let _6 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 78 "parser.mly"
                              ( Ast.Cond (_2,_4,_6) )
# 831 "parser.ml"
               : 'expr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'app) in
    Obj.repr(
# 83 "parser.mly"
          ( _1 )
# 838 "parser.ml"
               : 'topexpr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'expr) in
    Obj.repr(
# 84 "parser.mly"
          ( _1 )
# 845 "parser.ml"
               : 'topexpr))
; (fun __caml_parser_env ->
    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'topexpr) in
    Obj.repr(
# 88 "parser.mly"
                ( Ast.Exp (_1) )
# 852 "parser.ml"
               : Ast.root))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 : string) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 : 'topexpr) in
    Obj.repr(
# 89 "parser.mly"
                         ( Ast.Def (_2,_4) )
# 860 "parser.ml"
               : Ast.root))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 3 : string) in
    let _4 = (Parsing.peek_val __caml_parser_env 1 : 'topexpr) in
    Obj.repr(
# 90 "parser.mly"
                            ( Ast.Defrec (_2,_4) )
# 868 "parser.ml"
               : Ast.root))
; (fun __caml_parser_env ->
    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'topexpr) in
    Obj.repr(
# 91 "parser.mly"
                      ( Ast.Print (_2) )
# 875 "parser.ml"
               : Ast.root))
(* Entry main *)
; (fun __caml_parser_env -> raise (Parsing.YYexit (Parsing.peek_val __caml_parser_env 0)))
|]
let yytables =
  { Parsing.actions=yyact;
    Parsing.transl_const=yytransl_const;
    Parsing.transl_block=yytransl_block;
    Parsing.lhs=yylhs;
    Parsing.len=yylen;
    Parsing.defred=yydefred;
    Parsing.dgoto=yydgoto;
    Parsing.sindex=yysindex;
    Parsing.rindex=yyrindex;
    Parsing.gindex=yygindex;
    Parsing.tablesize=yytablesize;
    Parsing.table=yytable;
    Parsing.check=yycheck;
    Parsing.error_function=parse_error;
    Parsing.names_const=yynames_const;
    Parsing.names_block=yynames_block }
let main (lexfun : Lexing.lexbuf -> token) (lexbuf : Lexing.lexbuf) =
   (Parsing.yyparse yytables 1 lexfun lexbuf : Ast.root)
